home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / books / tech / g_gems4.toc < prev    next >
Text File  |  1995-01-18  |  12KB  |  329 lines

  1. Newsgroups: comp.graphics,comp.graphics.algorithms
  2. From: ph+@cs.cmu.edu (Paul Heckbert)
  3. Subject: Graphics Gems IV
  4. Date: Tue, 17 May 1994 05:46:15 GMT
  5.  
  6. The book "Graphics Gems IV", which I edited, was just printed and should be
  7. appearing in bookstores about now (mid-May).
  8.  
  9.     title: Graphics Gems IV
  10.     editor: Paul S. Heckbert
  11.     published: AP Professional (Academic Press), Boston, 1994
  12.     price: $49.95
  13.     575 pages, comes with either MAC or IBM floppy disk
  14.     ISBN 0-12-336156-7 with MAC floppy
  15.     ISBN 0-12-336155-9 with IBM (DOS) floppy (5.25")
  16.  
  17. Below are two things:
  18.   * the preface to the book, to explain what it is about
  19.   * the table of contents
  20.  
  21.  
  22. ======================================================================
  23. PREFACE
  24.  
  25. This book is a cookbook for computer graphics programmers, a kind of
  26. ``Numerical Recipes'' for graphics.  It contains practical techniques
  27. that can help you do 2D and 3D modeling, animation, rendering, and
  28. image processing.  The 52 articles, written by 54 authors worldwide,
  29. have been selected for their usefulness, novelty, and simplicity.  Each
  30. article, or ``Gem'', presents a technique in words and formulas, and
  31. also, for most of the articles, in C or C++ code as well.  The code is
  32. available in electronic form on the IBM or Macintosh floppy disk in the
  33. back pocket of the book, and is available on the Internet via FTP (see
  34. address below).  The floppy disk also contains all of the code from the
  35. previous volumes: Graphics Gems I, II, and III.  You are free to use
  36. and modify this code in any way you like.
  37.  
  38. A few of the Gems in this book deserve special mention because they
  39. provide implementations of particularly useful, but non-trivial
  40. algorithms.  Gems IV.6 and IV.8 give very general, modular code to
  41. polygonize parametric and implicit surfaces, respectively.  With these
  42. two and a polygon renderer, you could probably display 95% of all
  43. computer graphics models!  Gem I.5 finds 2D Voronoi diagrams or
  44. Delaunay triangulations.  These data structures are very widely used
  45. for mesh generation and other geometric operations.  In the area of
  46. interaction, Gem III.1 provides code for control of orientation in
  47. 3-D.  This could be used in interactive 3-D modelers.  Finally, Gem I.8
  48. gives code to find collisions of polyhedra, an important task in
  49. physically-based modeling and animation.
  50.  
  51. This book, like the previous three volumes in the Graphics Gems series,
  52. lies somewhere between the media of textbook, journal, and computer
  53. bulletin board.  Textbooks explain algorithms very well, but if you are
  54. doing computer graphics programming, then they may not provide what you
  55. need: an implementation.  Similarly, technical journals seldom present
  56. implementations, and they are often much more theoretical than a
  57. programmer cares for.  The third alternative, computer bulletin boards
  58. such as the USENET news group comp.graphics.algorithms, occasionally
  59. contain good code, but because they are unmoderated and unedited, they
  60. are so flooded with queries that it is tedious to find useful
  61. information.  The Graphics Gems series is an attempt at a middle
  62. ground, where programmers worldwide can contribute graphics techniques
  63. that they have found useful, and the best of these get published.  Most
  64. of the articles are written by the inventors of the techniques, so you
  65. will learn their motivations and see their programming techniques
  66. firsthand.  Also, the implementations have been selected for their
  67. portability; they are not limited to UNIX, IBM, or Macintosh systems.
  68. Most of them will compile and run, perhaps with minor modifications, on
  69. any computer with a C or C++ compiler.
  70.  
  71. Assembling this book has been a collaborative process involving many
  72. people.  In the Spring of 1993, a call for contributions was
  73. distributed worldwide via electronic mail and word of mouth.
  74. Submissions arrived in the Summer of 1993.  These were read by me and
  75. many were also read by one or more of my outside reviewers:  Eric
  76. Haines, Andrew Glassner, Chandrajit Bajaj, Tom Duff, Ron Goldman, Tom
  77. Sederberg, David Baraff, Jules Bloomenthal, Ken Shoemake, Mike Kass,
  78. Don Mitchell, and Greg Ward.
  79.  
  80. Of the 155 articles submitted, 52 were accepted for publication.  These
  81. were revised and, in most cases, formatted into Latex by the authors.
  82. Coordinating the project at Academic Press in Cambridge, Massachusetts,
  83. were Jenifer Niles and Brian Miller.  Book composition was done by Rena
  84. Wells at Rosenlaui Publishing Services in Houston, Texas, and the cover
  85. image was made by Eben Ostby of Pixar, in Richmond, California.  I am
  86. very thankful to all of these people and to the others who worked on
  87. this book for helping to make it a reality.  Great thanks also to the
  88. "Graphics Gems" series editor, Andrew Glassner, for inviting me to be
  89. editor for this volume, and to my wife, Bridget Johnson-Heckbert, for
  90. her patience.
  91.  
  92. There are a few differences between this book and the previous volumes
  93. of the series.  Organizationally, the code and bibliographies are not
  94. collected at the back of the book, but appear with the text of the
  95. corresponding article.  These changes make each Gem more
  96. self-contained.  The book also differs in emphasis.  Relative to the
  97. previous volumes, I have probably stressed novelty more, and simplicity
  98. less, preferring an implementation of a complex computer graphics
  99. algorithm over formulas from analytic geometry, for example.
  100.  
  101. In addition to the "Graphics Gems" series, there are several other good
  102. sources for practical computer graphics techniques.  One of these is
  103. the column ``Jim Blinn's Corner'' that appears in the journal "IEEE
  104. Computer Graphics and Applications".  Another is the book "A
  105. Programmer's Geometry", by Adrian Bowyer and John Woodwark
  106. (Butterworth's, London, 1983), which is full of analytic geometry
  107. formulas.  A mix of analytic geometry and basic computer graphics
  108. formulas is contained in the book "Computer Graphics Handbook:
  109. Geometry and Mathematics" by Michael E. Mortensen (Industrial Press,
  110. New York, 1990).  Another excellent source is, of course, graphics
  111. textbooks.
  112.  
  113. Code in this book is available
  114. on the Internet by anonymous FTP from princeton.edu
  115. (128.112.128.1) in the directory pub/GraphicsGems/GemsIV.
  116. The code for other "Graphics Gems" books is also available nearby.
  117. Bug reports should be submitted as described in the README file there.
  118.  
  119. Paul Heckbert, March 1994
  120.  
  121. ======================================================================
  122. TABLE OF CONTENTS
  123.  
  124. Below is the table of contents for "Graphics Gems IV".  This table also
  125. serves as an index to the code in the FTP collection.  Note that every
  126. article has text that appears in the book but not in the FTP archive,
  127. and some articles contain no C or C++ code.
  128.  
  129. file or        book    chapter title and author
  130. directory      chapter
  131. ------------------------------------------------------------
  132.  
  133.         I    POLYGONS AND POLYHEDRA
  134.  
  135. centroid.c    I.1    Centroid of a Polygon
  136.             Gerard Bashein and Paul R. Detmer
  137.  
  138. convex_test/    I.2    Testing the Convexity of a Polygon
  139.             Peter Schorn and Frederick Fisher
  140.  
  141. ptpoly_weiler/    I.3    An Incremental Angle Point in Polygon Test
  142.             Kevin Weiler
  143.  
  144. ptpoly_haines/    I.4    Point in Polygon Strategies
  145.             Eric Haines
  146.  
  147. delaunay/    I.5    Incremental Delaunay Triangulation
  148.             Dani Lischinski
  149.  
  150. vert_norm/    I.6    Building Vertex Normals from an Unstructured Polygon
  151.             List
  152.             Andrew Glassner
  153.  
  154.         I.7    Detecting Intersection of a Rectangular Solid and a
  155.             Convex Polyhedron
  156.             Ned Greene
  157.  
  158. collide.c    I.8    Fast Collision Detection of Moving Convex Polyhedra
  159.             Rich Rabbitz
  160. ------------------------------------------------------------
  161.  
  162.         II    GEOMETRY
  163.  
  164.         II.1    Distance to an Ellipsoid
  165.             John C. Hart
  166.  
  167. dist_fast.c    II.2    Fast Linear Approximations of Euclidean Distance in
  168.             Higher Dimensions
  169.             Yoshikazu Ohashi
  170.  
  171. outcode/    II.3    Direct Outcode Calculation for Faster Clip Testing
  172.             Walt Donovan and Tim Van Hook
  173.  
  174. sph_poly.c    II.4    Computing the Area of a Spherical Polygon
  175.             Robert D. Miller
  176.  
  177.         II.5    The Pleasures of `Perp Dot' Products
  178.             F. S. Hill, Jr.
  179.  
  180.         II.6    Geometry for N-Dimensional Graphics
  181.             Andrew J. Hanson
  182. ------------------------------------------------------------
  183.  
  184.         III    TRANSFORMATIONS
  185.  
  186. arcball/    III.1    Arcball Rotation Control
  187.             Ken Shoemake
  188.  
  189.         III.2    Efficient Eigenvalues for Visualization
  190.             Robert L. Cromwell
  191.  
  192. inv_fast.c    III.3    Fast Inversion of Length- and Angle-Preserving Matrices
  193.             Kevin Wu
  194.  
  195. polar_decomp/    III.4    Polar Matrix Decomposition
  196.             Ken Shoemake
  197.  
  198. euler_angle/    III.5    Euler Angle Conversion
  199.             Ken Shoemake
  200.  
  201.         III.6    Fiber Bundle Twist Reduction
  202.             Ken Shoemake
  203. ------------------------------------------------------------
  204.  
  205.         IV    CURVES AND SURFACES
  206.  
  207. data_smooth/    IV.1    Smoothing and Interpolation with Finite Differences
  208.             Paul H. C. Eilers
  209.  
  210.         IV.2    Knot Insertion using Forward Differences
  211.             Phillip Barry and Ron Goldman
  212.  
  213.         IV.3    Converting a Rational Curve to a Standard Rational
  214.             Bernstein-Bezier Representation
  215.             Chandrajit Bajaj and Guoliang Xu
  216.  
  217. curve_isect/    IV.4    Intersecting Parametric Cubic Curves by Midpoint
  218.             Subdivision
  219.             R. Victor Klassen
  220.  
  221. patch_conv.C    IV.5    Converting Rectangular Patches into Bezier Triangles
  222.             Dani Lischinski
  223.  
  224. nurb_polyg/    IV.6    Tessellation of NURB Surfaces
  225.             John W. Peterson
  226.  
  227.         IV.7    Equations of Cylinders and Cones
  228.             Ching-Kuang Shene
  229.  
  230. implicit.c    IV.8    An Implicit Surface Polygonizer
  231.             Jules Bloomenthal
  232. ------------------------------------------------------------
  233.  
  234.         V    RAY TRACING
  235.  
  236.         V.1    Computing the Intersection of a Line and a Cylinder
  237.             Ching-Kuang Shene
  238.  
  239. ray_cyl.c    V.2    Intersecting a Ray with a Cylinder
  240.             Joseph M. Cychosz and Warren N. Waggenspack, Jr.
  241.  
  242. vox_traverse.c    V.3    Voxel Traversal along a 3D Line
  243.             Daniel Cohen
  244.  
  245. multi_jitter/    V.4    Multi-Jittered Sampling
  246.             Kenneth Chiu, Peter Shirley, and Changyaw Wang
  247.  
  248. minray/        V.5    A Minimal Ray Tracer
  249.             Paul S. Heckbert
  250. ------------------------------------------------------------
  251.  
  252.         VI    SHADING
  253.  
  254.         VI.1    A Fast Alternative to Phong's Specular Model
  255.             Christophe Schlick
  256.  
  257.         VI.2    R.E versus N.H Specular Highlights
  258.             Frederick Fisher and Andrew Woo
  259.  
  260.         VI.3    Fast Alternatives to Perlin's Bias and Gain Functions
  261.             Christophe Schlick
  262.  
  263.         VI.4    Fence Shading
  264.             Uwe Behrens
  265. ------------------------------------------------------------
  266.  
  267.         VII    FRAME BUFFER TECHNIQUES
  268.  
  269.         VII.1    XOR-Drawing with Guaranteed Contrast
  270.             Manfred Kopp and Michael Gervautz
  271.  
  272.         VII.2    A Contrast-Based Scalefactor for Luminance Display
  273.             Greg Ward
  274.  
  275. dyn_range/    VII.3    High Dynamic Range Pixels
  276.             Christophe Schlick
  277. ------------------------------------------------------------
  278.  
  279.         VIII    IMAGE PROCESSING
  280.  
  281. emboss.c    VIII.1    Fast Embossing Effects on Raster Image Data
  282.             John Schlag
  283.  
  284. coons_warp.c    VIII.2    Bilinear Coons Patch Image Warping
  285.             Paul S. Heckbert
  286.  
  287. convolve.c    VIII.3    Fast Convolution with Packed Lookup Tables
  288.             George Wolberg and Henry Massalin
  289.  
  290. thin_image.c    VIII.4    Efficient Binary Image Thinning using Neighborhood Maps
  291.             Joseph M. Cychosz
  292.  
  293. clahe.c        VIII.5    Contrast Limited Adaptive Histogram Equalization
  294.             Karel Zuiderveld
  295.  
  296. mrsfoley.im    VIII.6    Ideal Tiles for Shading and Halftoning
  297.             Alan Wm Paeth
  298. ------------------------------------------------------------
  299.  
  300.         IX    GRAPHIC DESIGN
  301.  
  302.         IX.1    Placing Text Labels on Maps and Diagrams
  303.             Jon Christensen, Joe Marks, and Stuart Shieber
  304.  
  305. graph_layout/    IX.2    Dynamic Layout Algorithm to Display General Graphs
  306.             Laszlo Szirmay-Kalos
  307. ------------------------------------------------------------
  308.  
  309.         X    UTILITIES
  310.  
  311. trilerp.c    X.1    Tri-linear Interpolation
  312.             Steve Hill
  313.  
  314. interp_fast.c    X.2    Faster Linear Interpolation
  315.             Steven Eker
  316.  
  317. vec_mat/    X.3    C++ Vector and Matrix Algebra Routines
  318.             Jean-Francois Doue
  319.  
  320. GraphicsGems.c    X.4    C Header File and Vector Library
  321. GraphicsGems.h        Andrew Glassner and Eric Haines
  322.  
  323. ======================================================================
  324.  
  325. Paul Heckbert                            ph@cs.cmu.edu
  326. Computer Science Dept., Carnegie Mellon University
  327. 5000 Forbes Ave, Pittsburgh PA 15213-3891, USA
  328.  
  329.